﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;

namespace SVC_DAL
{
    public class Dados
    {
        public String strconexao { get; set; }
        public SqlConnection con { get; set; }

       

        public Dados()
        {
            if (globalDAL.con == "Ricardo")
                //strconexao = "server = 192.168.0.110,1433;" +
                  //  " initial catalog= SVC;" +
                    //"user=sa;password=wfcrzo";
            //" integrated security=true;";
                strconexao = "server = DESKTOP-EBJ26VV; " + //RICARDO-PC\\SQLExpress;" +
                    " initial catalog= SVC;" +
                    //"user=sa;password=wfcrzo";
            " integrated security=true;";
            
                //strconexao = //"server=192.168.0.101\\SQLSERVER,1433;" +
            /*"server=Ricardo-PC\\SQLSERVER,1433;" +
       " initial catalog= SVC;" +
       "user=sa;password=wfcrzo;";*/
            else if (globalDAL.con == "William")
                strconexao = "server = William;" +
                    " initial catalog= SVC;" +
                    " integrated security=true;";
            // strconexao = //"server=192.168.0.101\\SQLSERVER,1433;" +
            //     "server=192.168.0.105\\SQLSERVER,1433;" +
            //" initial catalog= SVC;" +
            //"user=sa;password=wfcrzo;";
            else if (globalDAL.con == "Ricardo-Desktop") //Cliente
            {
                strconexao = "server = RICARDO-PC\\SQLEXPRESS;" +
                    " initial catalog= SVC;" +
                    " integrated security=true;";
                     //"user=sa;password=wfcrzo;";
            }
            else if (globalDAL.con == "Cliente") //Cliente
            {
                strconexao = "server=192.168.0.103,1433;" +
                    " initial catalog= SVC;" +
                    //" integrated security=true;";
               "user=sa;password=wfcrzo;";
            }
            else if (globalDAL.con == "Helder")
            {
                strconexao = "server=HELDER-NB\\SQLEXPRESS;" +
                    " initial catalog= SVC;" +
                    " integrated security=true;";
            }
            else if (globalDAL.con == "Marta")
            {
                strconexao = "server=AFONSOANDRADE\\SQLEXPRESS;" +
                    " initial catalog= SVC;" +
                    " integrated security=true;";
               //"user=sa;password=wfcrzo;";
            }
            con = new SqlConnection(strconexao);
        }

        public Dados(String usuario, String senha)
        {
            strconexao = "server=RICARDO-PC;" +
               " initial catalog= SVC;" +
               "user=" + usuario + ";password=" + senha + ";";
            con = new SqlConnection(strconexao);

        }

        public void abreConexao()
        {
            try
            {
                con.Open();
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        public void fechaConexao()
        {
            try
            {
                if (con.State == ConnectionState.Open)
                    con.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        //delete, update, insert (não precisa retornar o codigo)
        public void executacomando(SqlCommand cmd)
        {
            try
            {
                
                abreConexao();                
                //ligar o comando na conexao
                cmd.Connection = con;
                cmd.ExecuteNonQuery();
                fechaConexao();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        //insert com retorno de codigo
        public int executacomandoInsert(SqlCommand cmd, String nometabela)
        {
            int codigo = 0;
            try
            {
                cmd.CommandText += ";select @@identity "
                    + nometabela;
                abreConexao();
                cmd.Connection = con;
                codigo = int.Parse(cmd.ExecuteScalar().ToString());
                fechaConexao();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return codigo;
        }

        //select
        public DataTable executaconsulta(SqlCommand cmd)
        {
            DataTable tab = null;
            try
            {
                tab = new DataTable();
                cmd.Connection = con;
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(tab);
                da = null;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return tab;

        }

        //preenche um combobox
        public void preencheComboBox(ComboBox cb,
            String nometabela, String campocodigo,
            String descricao, String filtro,
            String ordem)
        {
            try
            {
                String sql = "";
                sql = "select * from " + nometabela;
                if (filtro != "")
                    sql += " where " + filtro;
                if (ordem != "")
                    sql += " order by " + ordem;
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = sql;
                //datatable contem o retorno do sql
                DataTable tab = executaconsulta(cmd);
                //vinculando o datatable no combobox
                cb.DataSource = tab;
                //indicar ao combobox, qual campo é o codigo
                cb.ValueMember = campocodigo;
                //indicar ao combobox, qual campo exibir
                cb.DisplayMember = descricao;
                
                cmd = null;
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        public void preencheComboBoxCliente(ComboBox cb,
           String nometabela, String campocodigo,
           String descricao, String filtro,
           String ordem)
        {
            try
            {
                String sql = "";
                sql = "select cli_codigo,CASE WHEN (cli_tipo_pessoa = 'Pessoa Física') THEN cli_nome ELSE cli_razao_social END 'Cliente' from " + nometabela;
                if (filtro != "")
                    sql += " where " + filtro;
                if (ordem != "")
                    sql += " order by " + ordem;
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = sql;
                //datatable contem o retorno do sql
                DataTable tab = executaconsulta(cmd);
                //vinculando o datatable no combobox
                cb.DataSource = tab;
                //indicar ao combobox, qual campo é o codigo
                cb.ValueMember = campocodigo;
                //indicar ao combobox, qual campo exibir
                cb.DisplayMember = descricao;                
                cmd = null;
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        //preenche um combobox
        public void preencheComboBoxFornecedores(ComboBox cb,
            String nometabela, String campocodigo,
            String descricao, String filtro,
            String ordem)
        {
            try
            {
                String sql = "";
                sql = "select for_codigo,CASE WHEN for_tipo_fornecedor = 'Pessoa Jurídica' THEN for_razaoSocial ELSE for_nome END 'Fornecedores' from " + nometabela;
                if (filtro != "")
                    sql += " where " + filtro;
                if (ordem != "")
                    sql += " order by " + ordem;
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = sql;
                //datatable contem o retorno do sql
                DataTable tab = executaconsulta(cmd);
                //vinculando o datatable no combobox
                cb.DataSource = tab;
                //indicar ao combobox, qual campo é o codigo
                cb.ValueMember = campocodigo;
                //indicar ao combobox, qual campo exibir
                cb.DisplayMember = descricao;       
                cmd = null;
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        public void preencheComboBox(ComboBox cb,
            String nometabela, String campocodigo,
            String descricao, String filtro, String agrupa,
            String ordem)
        {
            try
            {
                String sql = "";
                sql = "select ga.gacod,ga.ganome from " + nometabela;
                if (filtro != "")
                    sql += " where " + filtro;
                if (agrupa != "")
                    sql += " group by " + agrupa;
                if (ordem != "")
                    sql += " order by " + ordem;
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = sql;
                //datatable contem o retorno do sql
                DataTable tab = executaconsulta(cmd);
                //vinculando o datatable no combobox
                cb.DataSource = tab;
                //indicar ao combobox, qual campo é o codigo
                cb.ValueMember = campocodigo;
                //indicar ao combobox, qual campo exibir
                cb.DisplayMember = descricao;                
                cmd = null;
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }
    }
}
